Enterprises face major storage challenges due to the fast growth of their storage needs, the increased complexity of managing the storage, and the requirement for high availability of storage. Storage Area Network (SAN) technologies enable storage systems to be engineered separately from host computers through the pooling of storage, resulting in improved efficiency.
Storage virtualization, a storage management technology which masks the physical storage complexities from the user, may also be used. Block virtualization (sometimes also called block aggregation) provides servers with a logical view of the physical storage, such as disk drives, solid-state disks, and tape drives, on which data is actually stored. The logical view may comprise a number of virtual storage areas into which the available storage space is divided (or aggregated) without regard to the physical layout of the actual storage. The servers no longer see specific physical targets, but instead see logical volumes which can be for their exclusive use. The servers send their data to the virtual storage areas as if they are their direct-attached property.
Virtualization may take place at the level of volumes, individual files or at the level of blocks that represent specific locations within a disk drive. Block aggregation can be performed within hosts (servers), in the storage network (storage routers, storage controllers), and/or in storage devices (intelligent disk arrays).
Typically, a storage virtualization engine acts as a shared storage interconnect coupled between host data processors and the physical storage media, enabling the host data processors to be maintained “zoned” from the physical storage media. The physical storage media are invisible to the host data processors, which see only the virtual disks presented by the virtualization engine.
The virtualization engine splits the physical storage into chunks, or “extents”. Meta-data within the engine tracks the mapping of extents to virtual disks. I/O requests from the host data processors to the virtual disks are directed by the virtualization engine to the corresponding physical data blocks according to its mappings. The host data processors may be those of different vendors and may have different operating systems.
In order to maximize use of the physical storage available a storage manager may be used to migrate data which is deemed to be less important from higher level (expensive and highly redundant) storage to lower level (less expensive and possibly less redundant) storage. To enable this, the virtualization engine may maintain additional metadata for use by the storage manager, such as an access value for each physical data block indicating how often the data block has been accessed recently.
As the use of storage virtualization in SANs continues to increase, it becomes possible to implement overallocation of the available free capacity across multiple storage subsystems (which themselves do not support overallocation). When the virtualization engine creates a virtual disk it informs the host processor that is has created a virtual disk of a certain number of bytes, it gives the host the impression that this amount of physical storage has been allocated to the host. However, in an overallocated environment this may not be the case. When an overallocated virtual disk is created no actual physical capacity is allocated. As data is written to the virtual disk only the required number of extents (at least one) are allocated to the virtual disk. This allows storage to be allocated as it is needed. The primary advantage of such a system is that at any given time, the system only ever uses physical capacity equal to or slightly greater than the amount of data the system is managing. For example, in a non-overallocated environment when a Flash copy (point in time copy) of a virtual disk is made the target virtual disk needs to be the same size as the source. This can be seen as a ‘waste’ of premium storage. If the target virtual disk is created as an overallocated volume, only the actual ‘changed’ capacity is ever allocated for the target.
Overallocation does, however, introduce a new problem when the actual physical storage begins to fill up and there is found to be insufficient space allocated to store the new data. Warning levels may be set, typically by a system administrator, such that a warning message is sent when the storage level reaches a warning level, e.g. “Warn me when my physical storage reaches 75% full”. However, sometimes this level may be set incorrectly, or the system administrator may not realize how much data their enterprise adds on a daily basis, and thus may be running the risk of running out of free physical storage capacity.
The present invention aims to address this problem.